package se.no.noko.engine.core;

public class Matrices {
	/**
	 * Store the model matrix. This matrix is used to move models from object
	 * space (where each model can be thought of being located at the center of
	 * the universe) to world space.
	 */
	private final float[] modelMatrix = new float[16];

	/**
	 * Store the view matrix. This can be thought of as our camera. This matrix
	 * transforms world space to eye space; it positions things relative to our
	 * eye.
	 */
	private final float[] viewMatrix = new float[16];

	/**
	 * Store the projection matrix. This is used to project the scene onto a 2D
	 * viewport.
	 */
	private final float[] projectionMatrix = new float[16];

	/**
	 * Allocate storage for the final combined matrix. This will be passed into
	 * the shader program.
	 */
	private final float[] mvpMatrix = new float[16];

	/**
	 * Stores a copy of the model matrix specifically for the light position.
	 */
	private final float[] lightModelMatrix = new float[16];

	public float[] getLightModelMatrix() {
		return lightModelMatrix;
	}

	public float[] getMvpMatrix() {
		return mvpMatrix;
	}

	public float[] getProjectionMatrix() {
		return projectionMatrix;
	}

	public float[] getViewMatrix() {
		return viewMatrix;
	}

	public float[] getModelMatrix() {
		return modelMatrix;
	}
}
